package com.ip.user.mapper;

import com.ip.user.models.vo.SysPermissionVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 权限Mapper接口
 */
@Mapper
public interface SysPermissionMapper {
    
    /**
     * 插入权限
     * @param permissionVO 权限VO对象
     * @return 影响行数
     */
    int insertPermission(SysPermissionVO permissionVO);
    
    /**
     * 根据ID查询权限
     * @param permId 权限ID
     * @return 权限VO对象
     */
    SysPermissionVO selectPermissionById(Integer permId);
    
    /**
     * 根据权限编码查询权限
     * @param permCode 权限编码
     * @return 权限VO对象
     */
    SysPermissionVO selectPermissionByCode(String permCode);
    
    /**
     * 查询所有权限
     * @return 权限VO列表
     */
    List<SysPermissionVO> selectAllPermissions();
    
    /**
     * 查询用户组的所有权限
     * @param groupId 用户组ID
     * @return 权限VO列表
     */
    List<SysPermissionVO> selectPermissionsByGroupId(Integer groupId);
    
    /**
     * 查询用户的所有权限编码
     * @param userId 用户ID
     * @return 权限编码列表
     */
    List<String> selectPermissionCodesByUserId(Integer userId);
    
    /**
     * 查询权限及其子权限
     * @param parentPermId 上级权限ID
     * @return 权限VO列表
     */
    List<SysPermissionVO> selectChildPermissions(Integer parentPermId);
    
    /**
     * 更新权限信息
     * @param permissionVO 权限VO对象
     * @return 影响行数
     */
    int updatePermission(SysPermissionVO permissionVO);
    
    /**
     * 删除权限
     * @param permId 权限ID
     * @return 影响行数
     */
    int deletePermission(Integer permId);
}